#ifndef GRADERMANAGER_H
#define GRADERMANAGER_H

#include "stdafx.h"
#include "../Core/Singleton.h"
#include "../Core/Thread.h"
#include "../Shared/GraderStatus.h"
#include "../Shared/Request.h"

class GraderManager : public Singleton<GraderManager>, public std::map<int , GraderStatus>, public Thread
{
    public:
        GraderManager();
        virtual ~GraderManager();
        void Execute();

        /**
        **/
        virtual void AssignRequest(int pGraderId , Request pRequest);

        /**
        **/
        virtual int GetAvailableGraderId(int pPurpose);

    protected:
        /**
        * Melakukan inisialisasi objek GraderManager
        *   - Membaca file konfigurasi grader mana saja yang tersedia
        *   -
        **/
        virtual void Init();
    private:
};

#endif // GRADERMANAGER_H
